A network storage server is a processing system that is used to store and retrieve data on behalf of one or more hosts (clients) on a network. A storage server operates on behalf of one or more hosts to store and manage data in a set of mass storage devices, such as magnetic or optical storage-based discs or tapes. Some storage servers are designed to service file-level requests from hosts, as is commonly the case with file servers used in a network attached storage (NAS) environment. Other storage servers are designed to service block-level requests from hosts, as with storage servers used in a storage area network (SAN) environment. Still other servers are capable of servicing both file-level requests and block-level requests, as is the case with certain storage servers made by NetApp, Inc. of Sunnyvale, Calif.
Storage servers typically can perform various operations on data system objects managed by the storage server. These include, among others, read, write, truncate, append, and copy operations. Operations are executed in response to corresponding requests received from a host. For example, a read operation is executed in response to a read request, a write operation is executed in response to a write request, etc. In a read operation, the storage server provides a requested data block (or blocks) from a target file system object. In a write operation, the storage server modifies one or more data blocks in a target file system object. A truncate operation removes data blocks from the end of the file system object, while an append operation adds data blocks to the end of the file system object.
An important file system operation is the copy (or clone) operation, in which the storage server generates a new file system object that has contents identical to the contents of a source file system object. The new (copy) file system object is generally unavailable for other operations until the copy operation is complete. Because the storage server must copy all of the contents of the source file system object before the object is available for other operations, the time to complete the copy operation varies depending on the size of the source file system object. If the source file system object is large, the copy operation may have a duration that is noticeable to a user and can interfere with the user's activities. For example, for an extremely large file, the copy operation could take significant user-perceivable time with present technology.